Plug a leak
authorMatthias Clasen <mclasen@redhat.com>
Sun, 6 Sep 2015 23:16:43 +0000 (19:16 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 6 Sep 2015 23:16:43 +0000 (19:16 -0400)
A type class reference gotten with g_type_class_ref must be released
with g_type_class_unref, or else we leak.

gtk/gtkcsswidgetnode.c

index 4e67b51c3c11d437690bc19e08a132bb6d2edb8b..f579c1235305fc0197d44a5dc0bede0770e4bd2d 100644 (file)
@@ -145,6 +145,7 @@ static gboolean
 widget_needs_widget_path (GtkWidget *widget)
 {
   static GetPathForChildFunc funcs[2];
+  GtkContainerClass *class;
   GtkWidget *parent;
   GetPathForChildFunc parent_func;
   guint i;
@@ -152,8 +153,14 @@ widget_needs_widget_path (GtkWidget *widget)
   if (G_UNLIKELY (funcs[0] == NULL))
     {
       i = 0;
-      funcs[i++] = GTK_CONTAINER_CLASS (g_type_class_ref (GTK_TYPE_CONTAINER))->get_path_for_child;
-      funcs[i++] = GTK_CONTAINER_CLASS (g_type_class_ref (GTK_TYPE_BOX))->get_path_for_child;
+
+      class = (GtkContainerClass*)g_type_class_ref (GTK_TYPE_CONTAINER);
+      funcs[i++] = class->get_path_for_child;
+      g_type_class_unref (class);
+
+      class = (GtkContainerClass*)g_type_class_ref (GTK_TYPE_BOX);
+      funcs[i++] = class->get_path_for_child;
+      g_type_class_unref (class);
 
       g_assert (i == G_N_ELEMENTS (funcs));
     }